# Table of Contents

# Kotlin 면접 정리

Kotlin 면접 내용을 정리합니다.

# 타입 추론

변수나 상수에 타입을 선언하지 않아도 할당되는 값에 따라 자동으로 타입을 추론해주는 기능

# 늦은 초기화

  • Kotlin은 원칙적으로 변수나 상수를 선언과 동시에 초기화해야한다.
  • 값이 없다면 Nullable 타입으로도 선언한 후 null이라도 할당해야한다.
  • 늦은 초기화를 사용하면 선언만 먼저 하고 초기화는 나중에 할 수 있는 방법을 제공한다.
  • Kotlin에서는 두 가지 방식의 늦은 초기화를 제공한다.

# lateinit var

  • 보통 클래스 내부에서 사용한다.
  • 기본 자료형에는 사용할 수 없으며 클래스의 인스턴스에만 사용할 수 있다.

# val by lazy

  • 상수에 접근할 때 값이 초기화된다.

# 스코프 함수

  • run(): 함수를 호출한 객체가 람다에 암시적으로 전달되며, this 키워드로 접근할 수 있다. 또한 람다식의 마지막 구문이 결과값으로 반환된다.
  • let(): 함수를 호출한 객체가 람다에 명시적으로 전달되며, it으로 접근할 수 있다. 또한 람다식의 마지막 구문이 결과값으로 반환된다.
  • apply(): 함수를 호출한 객체가 람다에 암시적으로 전달되며, this 키워드로 접근할 수 있다. 또한 람다식을 적용한 객체가 반환된다.
  • also(): 함수를 호출한 객체가 람다에 명시적으로 전달되며, it으로 접근할 수 있다. 또한 람다식을 적용한 객체가 반환된다.
  • with(): run()과 유사하지만 인스턴스를 첫 번째 인자로 전달한다.

# 동일성과 동등성

# 동일성

동일성(Identity)는 두 객체의 주소값이 같다는 것을 의미한다. Kotlin에서는 === 연산자로 두 객체의 주소값이 동일한지 비교할 수 있다.

# 동등성

동등성(Equality)는 두 객체의 속성값이 같다는 것을 의마한다. Kotlin 에서는 ==연산자로 동등성을 비교할 수 있으며 내부적으로 equal()메소드가 호출된다.